/*public class test {
    public static void main(String[] args) {
        //作业：
 //       创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
        // 要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
        System.out.println(max2(3,5));
        System.out.println(max3(4,1,9));
    }
    public static int max2(int x,int y){
            int c =   x>y?x:y;
          return c ;
    }
    public static  int max3(int x,int y,int z){
        int c = max2(x,y);
        int d = max2(c,z);
        return d ;
    }
}*/
/*
public class test {
    public static void main(String[] args) {
        //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
        //方法的重载
        System.out.println(add(1,2));
        System.out.println(add(1,2,3));

    }
    public static int add(int x,int y){
        int c = x+y;
        return c;
    }
    public static int add(int x,int y,int z){
        int c  =x+y+z;
        return c;}
    }
*/
/*
public class test {
    public static void main(String[] args) {
        //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
        System.out.println(max(1,5));
        System.out.println(max(3.4,5.2,3.14));
    }
    public static int max(int x,int y){
        int c = x>y?x:y;
        return c;
    }
    public static double max(double x,double y,double z){
        double c = (x>y?x:y)>z?(x>y?x:y): z;
        return c;
    }
}
*/
//汉诺塔问题：递归求解
public class test {
    public static void main(String[] args) {
        // 将一根柱子上的一摞从下到上依次减小的盘子，以同样的次序摆放到另一根柱子上，每次只能移动一个盘子
        //且在任何时候大盘子不能放在小盘子上面。
        arrange(1, 'A', 'B', 'C');
        arrange(2, 'A', 'B', 'C');
    }

    public static void arrange(int n, char a, char b, char c) {
        //用程序表示移动盘子的过程,需要参数表示盘子与柱子
        //如果只有一个盘子,此时盘子肯定在原柱上
        if (n == 1) {
                System.out.printf("移动：%d,%c->%c",n,a,c);
        } else {
            // 当盘子的数量大于1个时，先将上方的盘子移动至辅柱中
            //此时b柱变为目标柱 ，c柱变成辅柱
            arrange(n - 1, a, c, b);
            //在将上面的盘子移走后，遍可将a柱上的最大盘子移动至c柱
            System.out.printf("移动：%d,%c->%c",n,a,c);
            //然后再将在b柱上的一摞盘子移动到c柱上
            //此时b变成原柱，a变成辅柱,c变成目标柱
            arrange(n - 1, b, a, c);

        }
    }
}




